#include <Klein/Shader/Fragment.h>
#include <Klein/Shader/FragmentDatabase.h>

Fragment::Fragment(const FragmentIdentifier& identifier) :
	mIdentifier(identifier),
	mParameterGroup(new ParameterGroup)
{
}

Fragment::Fragment(const Fragment& copy) :
	mIdentifier(copy.mIdentifier),
	mSourceCode(copy.mSourceCode),
	mParameterGroup(copy.mParameterGroup)
{
}

Fragment::~Fragment()
{
}

const FragmentIdentifier& Fragment::GetIdentifier() const
{
	return mIdentifier;
}

bool Fragment::AddParameter(const Parameter& parameter)
{
	return mParameterGroup->AddParameter(parameter);
}

ParameterGroupRef Fragment::GetParameterGroup() const
{
	return mParameterGroup;
}

bool Fragment::Register() const
{
	return FragmentDatabase::GetReference().AddFragment(FragmentRef(new Fragment(*this)));
}

